ผ่าพิสุจน์ GCMS4 ตอน 1 เริ่มต้นที่ index.php
แผนกนิติเวชขอเชิญทุกท่านร่วมผ่าพิสูจน์ GCMS4 และขอยืนยันว่าทุกท่านที่ได้อ่านบทความนี้จะไม่ผิดหวังแน่นอน
แผนกนิติเวชจะพาทุกท่านได้ชมการผ่าพิสูจน์ในแต่ละไฟล์โดยละเอียดชนิดว่า บรรทัดต่อบรรทัด คำสั่งต่อคำสั่ง
ทุกขั้นตอนการทำงานของระบบ แต่เราจะอธิบายในรูปแบบที่เรียกว่าเป็นการคุยกันแบบสะบายๆ ไม่ซีเครียด
แต่หากใครที่ขี้เกียจอ่านทั้งหมดหรือมีพื้นฐานอยู่บ้างแล้ว ก็ข้ามไปอ่านตรงสรุปได้เลย จะได้ไม่เสียเวลา
ซึ่งในตอนแรกของบทความนี้จะกล่าวถึงส่วนในส่วนที่ขาดไม่ได้เลย เพราะมันเป็นส่วนที่ถูกเรียกใช้เป็นอันดับแรก
เมื่อคุณเข้าชมเว็บไม่ว่าเว็บไหนๆ ก็ต้องมีไฟล์นี้
ซึ่งที่เราจะกล่าวถึงเป็นอันดับแรกเลยคงจะเป็นไฟล์ไหนไปไม่ได้นอกจากไฟล์ index.php
ก่อนที่จะผ่าเราลองมาดูโค้ดเต็มๆ กันก่อน
อย่างที่เห็นกันในไฟล์นี้มีโค้ดเพียงแค่ไม่กีบรรทัด แต่เป็นไฟล์ที่สำคัญที่สุดเพราะเป็นจุดที่เชื่อมโยงทุกส่วนเข้าไว้
ด้วยกันเพื่อให้ทำงานได้อย่างเป็นระบบ
ในไฟล์นี้จะแบ่งการทำงานเป็นสองส่วนคือ
- การเตรียมความพร้อมของระบบ
- การตัดสินใจเลือกให้ติดตั้งระบบใหม่หรือโหลดหน้าเว็บที่ถูกติดตั้งไว้แล้ว
เอาล่ะ ดูนาฬิกาตอนนี้มันควรจะได้เวลาผ่ากันแล้วล่ะ อย่าช้าอยู่เลย ลงมือกันได้แล้ว
เราจะมาดูกันที่ส่วนแรกก่อน เริ่มกันที่บรรทัดแรกเป็นการประกาศเริ่มต้นไฟล์เอกสาร PHP ซึ่งจะถูกเปิดโดยแท็กซ์
<?php เป็นไปตามข้อกำหนดในการประกาศเริ่มต้นการเขียน PHP
ในบรรทัดที่ 2
เราจะเห็นคำสั่งนี้
เป็นการเรียกไฟล์ภายนอกเข้ามาทำงาน โดยที่ require_once นั้นจะเรียกไฟล์มาแค่ครั้งเดียวเท่านั้น
ลองดูภาพในวงเล็บของ require_once เราจะเห็นเส้นทางที่ตั้งของไฟล์ที่ถูกเรียกมาทำงานร่วมกัน
บางคนอาจจะยังไม่เข้าใจในวงเล็บดังกล่าว ตรงนี้จะอธิบายลงลึกไปอีกนิดส่วนใครที่เข้าใจดีอยู่แล้วก็ข้ามไปเลย
โดยภายในวงเล็บนั้นจะมีส่วนประกอบอยู่ด้วยกัน 2 ส่วน คือ
และ
ทั้ง 2 นั้นจะถูกเชื่อมกันด้วย . (จุด/ดอท)
ในส่วนท้ายคงพอจะเข้าใจได้ไม่ยากเพราะเป็นการอ้างไปถึงเส้นทางของที่อยู่ไฟล์โดยชัดเจน แต่ในส่วนต้น
(ส่วนแรก) นั้นหากไม่กล่าวถึงอาจจะงงหาที่มาที่ไปไม่ถูก dirname() นั้นเป็นฟังก์ชั่นสำเร็จรูปที่ PHP ได้
อำนวยความสะดวกให้เรายิบมาใช้งานได้ทันทีโดยไม่ต้องเขียนขึ้นมาเอง เออว่าแต่ว่ามันเอาไว้ใช้ทำอะไรล่ะ
นั่นน่ะสิเออมันเอาไว้ใช่ทำอะไรนะ
หน้าที่ของฟังก์ชั่น dirname() คืองมหาที่อยู่ที่เป็นโฟลเดอร์ของไฟล์ที่ภายในวงเล็บ อย่างเช่นถ้าเราใช้คำสั่ง
dirname('โฟลเดอร์A/file.php') เราก็จะได้ลัพภ์เท่ากับ 'โฟลเดอร์A' (อืม..ยั่งงี้นี่เอง)
เอ...
ฟังก์ชั่น dirname() มันจะงมหาที่อยู่ที่เป็นโฟลเดอร์ของไฟล์ที่ภายในวงเล็บใช่มั๊ย แล้วภายในวงเล็บเนี่ยมัน
เขียนออกมาอยู่ในรูปแบบ dirname(__FILE__) แล้วมันหมายความว่าไงกันล่ะ ไอ้เจ้า __FILE__ มันคือ
อะไรมีที่มายังไง
__FILE__ เป็นตัวแปรชนิดนึงที่ PHP เตรียมไว้ให้เราใช้ โดยเจ้าตัวถูกมันได้ถูกกำหนดไว้ล่วงหน้าแล้วว่าตัว
มันจะใช้สำหรับอ้างอิงไฟล์ที่เรียกทำงานอยู่ในปัจจุบัน (เหมือนกับการเรียกชื่อตัวเอง) เมื่ออยู่ภาพในวงเล็บ
ของ dirname() ก็จะเป็นการงมหาโฟล์เดอร์ปัจจุบันของไฟล์ index.php นั่นเอง ผลลัพภ์จะได้ออกมาเป็น
อะไรนั้นก็ขึ้นอยู่กับว่าคุณนำไฟล์ไปติดตั้งอยู่ที่ใด ในที่นี้ขอสมมุติว่าเป็น 'webroot'
เมื่อได้โฟลเดอร์ปัจจุบัน 'webroot'
นำมาต่อกับส่วนท้ายที่เราเห็นในตอนแรกคือ '/bin/inint.php'
ก็จะกลายเป็น 'webroot/bin/inint.php'
ทีนี้เราก็สามารถเรียกไฟล์ที่อยู่ webroot/bin/inint.php มาทำงานร่วมกันกับไฟล์ index.php ได้แล้ว
ว่ากันต่อกับโค้ดบรรทัดที่ 3
ในบรรทัดนี้จะเป็นการประกาศตัวแปรชนิดคงที่ไว้เพื่อรองรับการอ้างอิงของระบบ ตัวแปรชนิดนี้เป็นตัวแปรชนิด
เดียวกับตัวแปร __FILE__ ที่ผ่านมาเมื่อครู่ ว่าแล้วเราก็มาเริ่มผ่าบรรทัดนี้กัน
สิ่งที่เราเห็นในบรรทัดนี้มีอยู่ด้วยกัน 2 ส่วนคือ
- ฟังก์ชั่น DEFINE()
- อาร์กิวเม้นท์ 2 ตัวที่อยู่ในวงเล็บ (ค่าที่เราส่งให้ฟังก์ชั่นเราไปทำงาน)
ส่วนแรกฟังก์ชั่น DEFINE() นี้เราจะใช้เพื่อประกาศตัวแปรเพื่อให้ PHP รู้จักกับตัวแปรคงที่ ที่อยู่ภายในวงเล็บ
เมื่อเราได้ประกาศตัวแปรคงที่นี้แล้วเราสามารถที่จะนำเอาชื่อตัวแปรที่เราได้ประกาศไว้ไปใช้ในส่วนใดก็ได้
ภายระบบของเราแต่ต้องอยู่หลังจากบรรทัดที่ได้ประกาศตัวแปรนี้ไว้
ส่วนที่สองอาร์กิวเม้นท์ 2 ตัวที่อยู่ในวงเล็บนั้นอะไรเป็นอะไรเรามาแยกแยะกันดู
ตัวแรก
ตัวที่สอง
มีจุดสังเกตที่เราจะรู้ว่ามันเป็นคนละตัวกันได้อย่างไร อันนี้ง่ายๆ อาร์กิวเม้นท์แต่ละตัวจะถูกแยกแยะโดยเครื่อง
หมาย , (ลูกน้ำ/คอมม่า) ตัวแรกเป็นการกำหนดชื่อให้กับตัวแปรตงที่ ในที่นี้ให้ชื่อว่า MAIN_INIT
ส่วนตัวที่สองนั้นจะเป็นการกำหนดค่าที่จะเก็บไว้ในตัวแปรที่ได้ประกาศขึ้น ซึ่งกำหนดไว้เป็น ROOT_PATH นั่นเอง
จากที่สืบประวัติมา ROOT_PATH ได้ถือกำเนิดเป็นตัวแปรคงที่ ณ บรรทัดที่ 17 ของไฟล์ bin/vars.php
แล้วนำมันมาใช้ที่นี่ได้อย่างไร ยังไม่เห็นในบรรทัดไหนที่อ้างอิงไปที่ bin/vars.php เลย ก็จริงอยู่ในไฟล์นี้
ไม่ได้มีส่วนไหนเอ่ยอ้างไปยังตำแหน่งดังกล่าว แต่ลองย้อนกลับไปดูโค้ดในบรรทัดที่ 2 ได้มีการเรียกไฟล์ขึ้นมาร่วม
ทำงานด้วยนั่นตือ webroot/bin/inint.php แล้วไฟล์ตัวนี้เองในบรรทัดที่ 11 ได้เรียกไฟล์ bin/vars.php
ต่ออีกทอดนึง
ถัดไปจะขออธิบายรวบยอดในบรรทัดที่ 4-5 และ 6 ไปทีเดียว เพราะเป็นชุดคำสั่งเดียวกัน ในบล็อคนี้จะเป็นการ
ตรวจสอบเงื่อนไขบางอย่างว่าตรงตามความต้องการหรือไม่ โดยใน่สวนนี้จะทำการตรวจสอบว่ามีไฟล์
webroot/bin/config.php อยู่ในระบบหรือไม่ ซึ่งมีคำสั่งที่ช่วยค้นหาดูว่าตามเส้นทางที่อยู่ดังกล่าวมีไฟล์นั้นอยู่จริง
หรือไม่นั่นคือฟังก์ชั่น is_file() การทำงานก็จะคล้ายๆกันกับฟังก์ชั่น dirname() แตกต่างกันเพียงแค่ dirname()
นั้นจะหาโฟลเดอร์ ส่วน is_file() นั่นจะหาไฟล์
หลังจากที่ได้ทำการตรวจสอบแล้วหากพบว่ามีไฟล์ webroot/bin/config.php นี้อยู่จริงก็จะเรียกไฟล์เข้ามา
ร่วมทำงานกับไฟล์ index.php นี้ด้วย เพื่อกำหนดค่าต่างๆ ของระบบโดยสมบูรณ์
หลังจากตรงนี้จะเป็นส่วนสุดท้ายแล้ว ใครจะลุกไปเข้าห้องน้ำก่อนก็ไม่ว่ากันแต่รีบหน่อยนะ ส่วนใครที่ไม่ลุกไปไหน
ก็แนะนำให้พักสายยตาสักแป๊บนึงหันออกไปมองนอกจอบ้างเผื่อเจอเนื้อคู่
อ่านมาถึงบรรทัดนี้แสดงว่าพร้อมแล้วเรามาเริ่มกันเลย และในส่วนสุดท้ายของไฟล์นี้จะขออธิบายรวบยอดเป็นบล็อค
เหมือนส่วนที่พึ่งจะอธิบายผ่านมา โดยจะตั้งแต่บรรทัดที่ 7-11
โค้ดในบล็อคนี้จะเป็นการตรวจสอบว่าตัวแปร
ว่างเปล่าอยู่หรือไม่ หากมีตัวใดตัวนึงเป็นค่าว่างเปล่า จะเรียกไฟล์ ติดตั้งระบบเข้ามาทำงานต่อ
ตัวแปรเหล่านี้ได้ถูกประกาศและกำหนดค่าไว้ในไฟล์ webroot/bin/config.php เป็นค่าที่ได้เมื่อเราทำการ
ติดตั้งระบบในคั้งแรก
แต่หากตรวจสอบแล้วพบว่าต่าตัวแปรดังกล่าวไม่ค่าที่ถูกต้องตามที่ระบบกำหนดก็จะเรียกไฟล์โหลดเข้ามาทำงาน
สรุปการทำงานอธิบายตามบรรทัด
ไฟล์นี้เปรียบเหมือนการเตรียมความพร้อมในการเริ่มการทำงานของระบบ
________________________________________________________________________________
==============================================================
บทความนี้เป็นปฐมบทจึงค่อนข้างที่จะอธิบายยืดยาวมากไปหน่อย สำหรับคราวหน้าจะขออธิบายในลักษณะของการ
สรุปเพื่อความกระชับของข้อมูลแต่ยังเน้นในการทำความเข้าใจที่ง่าย
แผนกนิติเวชจะพาทุกท่านได้ชมการผ่าพิสูจน์ในแต่ละไฟล์โดยละเอียดชนิดว่า บรรทัดต่อบรรทัด คำสั่งต่อคำสั่ง
ทุกขั้นตอนการทำงานของระบบ แต่เราจะอธิบายในรูปแบบที่เรียกว่าเป็นการคุยกันแบบสะบายๆ ไม่ซีเครียด
แต่หากใครที่ขี้เกียจอ่านทั้งหมดหรือมีพื้นฐานอยู่บ้างแล้ว ก็ข้ามไปอ่านตรงสรุปได้เลย จะได้ไม่เสียเวลา
ซึ่งในตอนแรกของบทความนี้จะกล่าวถึงส่วนในส่วนที่ขาดไม่ได้เลย เพราะมันเป็นส่วนที่ถูกเรียกใช้เป็นอันดับแรก
เมื่อคุณเข้าชมเว็บไม่ว่าเว็บไหนๆ ก็ต้องมีไฟล์นี้
ซึ่งที่เราจะกล่าวถึงเป็นอันดับแรกเลยคงจะเป็นไฟล์ไหนไปไม่ได้นอกจากไฟล์ index.php
ก่อนที่จะผ่าเราลองมาดูโค้ดเต็มๆ กันก่อน
<?php require_once (dirname(__FILE__).'/bin/inint.php');
DEFINE('MAIN_INIT', ROOT_PATH);
if (is_file(ROOT_PATH.'bin/config.php')) {
require_once (ROOT_PATH.'bin/config.php');
}
if (empty($config['skin']) || empty($config['db_username']) || empty($config['db_name'])) {
require_once ('admin/install.php');
} else {
require_once ('load.php');
}
อย่างที่เห็นกันในไฟล์นี้มีโค้ดเพียงแค่ไม่กีบรรทัด แต่เป็นไฟล์ที่สำคัญที่สุดเพราะเป็นจุดที่เชื่อมโยงทุกส่วนเข้าไว้
ด้วยกันเพื่อให้ทำงานได้อย่างเป็นระบบ
ในไฟล์นี้จะแบ่งการทำงานเป็นสองส่วนคือ
- การเตรียมความพร้อมของระบบ
- การตัดสินใจเลือกให้ติดตั้งระบบใหม่หรือโหลดหน้าเว็บที่ถูกติดตั้งไว้แล้ว
เอาล่ะ ดูนาฬิกาตอนนี้มันควรจะได้เวลาผ่ากันแล้วล่ะ อย่าช้าอยู่เลย ลงมือกันได้แล้ว
เราจะมาดูกันที่ส่วนแรกก่อน เริ่มกันที่บรรทัดแรกเป็นการประกาศเริ่มต้นไฟล์เอกสาร PHP ซึ่งจะถูกเปิดโดยแท็กซ์
<?php เป็นไปตามข้อกำหนดในการประกาศเริ่มต้นการเขียน PHP
ในบรรทัดที่ 2
เราจะเห็นคำสั่งนี้
require_once (dirname(__FILE__).'/bin/inint.php');
เป็นการเรียกไฟล์ภายนอกเข้ามาทำงาน โดยที่ require_once นั้นจะเรียกไฟล์มาแค่ครั้งเดียวเท่านั้น
ลองดูภาพในวงเล็บของ require_once เราจะเห็นเส้นทางที่ตั้งของไฟล์ที่ถูกเรียกมาทำงานร่วมกัน
บางคนอาจจะยังไม่เข้าใจในวงเล็บดังกล่าว ตรงนี้จะอธิบายลงลึกไปอีกนิดส่วนใครที่เข้าใจดีอยู่แล้วก็ข้ามไปเลย
โดยภายในวงเล็บนั้นจะมีส่วนประกอบอยู่ด้วยกัน 2 ส่วน คือ
dirname(__FILE__)
และ
'/bin/inint.php'
ทั้ง 2 นั้นจะถูกเชื่อมกันด้วย . (จุด/ดอท)
ในส่วนท้ายคงพอจะเข้าใจได้ไม่ยากเพราะเป็นการอ้างไปถึงเส้นทางของที่อยู่ไฟล์โดยชัดเจน แต่ในส่วนต้น
(ส่วนแรก) นั้นหากไม่กล่าวถึงอาจจะงงหาที่มาที่ไปไม่ถูก dirname() นั้นเป็นฟังก์ชั่นสำเร็จรูปที่ PHP ได้
อำนวยความสะดวกให้เรายิบมาใช้งานได้ทันทีโดยไม่ต้องเขียนขึ้นมาเอง เออว่าแต่ว่ามันเอาไว้ใช้ทำอะไรล่ะ
นั่นน่ะสิเออมันเอาไว้ใช่ทำอะไรนะ
หน้าที่ของฟังก์ชั่น dirname() คืองมหาที่อยู่ที่เป็นโฟลเดอร์ของไฟล์ที่ภายในวงเล็บ อย่างเช่นถ้าเราใช้คำสั่ง
dirname('โฟลเดอร์A/file.php') เราก็จะได้ลัพภ์เท่ากับ 'โฟลเดอร์A' (อืม..ยั่งงี้นี่เอง)
เอ...
ฟังก์ชั่น dirname() มันจะงมหาที่อยู่ที่เป็นโฟลเดอร์ของไฟล์ที่ภายในวงเล็บใช่มั๊ย แล้วภายในวงเล็บเนี่ยมัน
เขียนออกมาอยู่ในรูปแบบ dirname(__FILE__) แล้วมันหมายความว่าไงกันล่ะ ไอ้เจ้า __FILE__ มันคือ
อะไรมีที่มายังไง
__FILE__ เป็นตัวแปรชนิดนึงที่ PHP เตรียมไว้ให้เราใช้ โดยเจ้าตัวถูกมันได้ถูกกำหนดไว้ล่วงหน้าแล้วว่าตัว
มันจะใช้สำหรับอ้างอิงไฟล์ที่เรียกทำงานอยู่ในปัจจุบัน (เหมือนกับการเรียกชื่อตัวเอง) เมื่ออยู่ภาพในวงเล็บ
ของ dirname() ก็จะเป็นการงมหาโฟล์เดอร์ปัจจุบันของไฟล์ index.php นั่นเอง ผลลัพภ์จะได้ออกมาเป็น
อะไรนั้นก็ขึ้นอยู่กับว่าคุณนำไฟล์ไปติดตั้งอยู่ที่ใด ในที่นี้ขอสมมุติว่าเป็น 'webroot'
เมื่อได้โฟลเดอร์ปัจจุบัน 'webroot'
นำมาต่อกับส่วนท้ายที่เราเห็นในตอนแรกคือ '/bin/inint.php'
ก็จะกลายเป็น 'webroot/bin/inint.php'
ทีนี้เราก็สามารถเรียกไฟล์ที่อยู่ webroot/bin/inint.php มาทำงานร่วมกันกับไฟล์ index.php ได้แล้ว
ว่ากันต่อกับโค้ดบรรทัดที่ 3
ในบรรทัดนี้จะเป็นการประกาศตัวแปรชนิดคงที่ไว้เพื่อรองรับการอ้างอิงของระบบ ตัวแปรชนิดนี้เป็นตัวแปรชนิด
เดียวกับตัวแปร __FILE__ ที่ผ่านมาเมื่อครู่ ว่าแล้วเราก็มาเริ่มผ่าบรรทัดนี้กัน
DEFINE('MAIN_INIT', ROOT_PATH);
สิ่งที่เราเห็นในบรรทัดนี้มีอยู่ด้วยกัน 2 ส่วนคือ
- ฟังก์ชั่น DEFINE()
- อาร์กิวเม้นท์ 2 ตัวที่อยู่ในวงเล็บ (ค่าที่เราส่งให้ฟังก์ชั่นเราไปทำงาน)
ส่วนแรกฟังก์ชั่น DEFINE() นี้เราจะใช้เพื่อประกาศตัวแปรเพื่อให้ PHP รู้จักกับตัวแปรคงที่ ที่อยู่ภายในวงเล็บ
เมื่อเราได้ประกาศตัวแปรคงที่นี้แล้วเราสามารถที่จะนำเอาชื่อตัวแปรที่เราได้ประกาศไว้ไปใช้ในส่วนใดก็ได้
ภายระบบของเราแต่ต้องอยู่หลังจากบรรทัดที่ได้ประกาศตัวแปรนี้ไว้
ส่วนที่สองอาร์กิวเม้นท์ 2 ตัวที่อยู่ในวงเล็บนั้นอะไรเป็นอะไรเรามาแยกแยะกันดู
ตัวแรก
'MAIN_INIT'
ตัวที่สอง
ROOT_PATH
มีจุดสังเกตที่เราจะรู้ว่ามันเป็นคนละตัวกันได้อย่างไร อันนี้ง่ายๆ อาร์กิวเม้นท์แต่ละตัวจะถูกแยกแยะโดยเครื่อง
หมาย , (ลูกน้ำ/คอมม่า) ตัวแรกเป็นการกำหนดชื่อให้กับตัวแปรตงที่ ในที่นี้ให้ชื่อว่า MAIN_INIT
ส่วนตัวที่สองนั้นจะเป็นการกำหนดค่าที่จะเก็บไว้ในตัวแปรที่ได้ประกาศขึ้น ซึ่งกำหนดไว้เป็น ROOT_PATH นั่นเอง
จากที่สืบประวัติมา ROOT_PATH ได้ถือกำเนิดเป็นตัวแปรคงที่ ณ บรรทัดที่ 17 ของไฟล์ bin/vars.php
แล้วนำมันมาใช้ที่นี่ได้อย่างไร ยังไม่เห็นในบรรทัดไหนที่อ้างอิงไปที่ bin/vars.php เลย ก็จริงอยู่ในไฟล์นี้
ไม่ได้มีส่วนไหนเอ่ยอ้างไปยังตำแหน่งดังกล่าว แต่ลองย้อนกลับไปดูโค้ดในบรรทัดที่ 2 ได้มีการเรียกไฟล์ขึ้นมาร่วม
ทำงานด้วยนั่นตือ webroot/bin/inint.php แล้วไฟล์ตัวนี้เองในบรรทัดที่ 11 ได้เรียกไฟล์ bin/vars.php
ต่ออีกทอดนึง
ถัดไปจะขออธิบายรวบยอดในบรรทัดที่ 4-5 และ 6 ไปทีเดียว เพราะเป็นชุดคำสั่งเดียวกัน ในบล็อคนี้จะเป็นการ
ตรวจสอบเงื่อนไขบางอย่างว่าตรงตามความต้องการหรือไม่ โดยใน่สวนนี้จะทำการตรวจสอบว่ามีไฟล์
webroot/bin/config.php อยู่ในระบบหรือไม่ ซึ่งมีคำสั่งที่ช่วยค้นหาดูว่าตามเส้นทางที่อยู่ดังกล่าวมีไฟล์นั้นอยู่จริง
หรือไม่นั่นคือฟังก์ชั่น is_file() การทำงานก็จะคล้ายๆกันกับฟังก์ชั่น dirname() แตกต่างกันเพียงแค่ dirname()
นั้นจะหาโฟลเดอร์ ส่วน is_file() นั่นจะหาไฟล์
หลังจากที่ได้ทำการตรวจสอบแล้วหากพบว่ามีไฟล์ webroot/bin/config.php นี้อยู่จริงก็จะเรียกไฟล์เข้ามา
ร่วมทำงานกับไฟล์ index.php นี้ด้วย เพื่อกำหนดค่าต่างๆ ของระบบโดยสมบูรณ์
หลังจากตรงนี้จะเป็นส่วนสุดท้ายแล้ว ใครจะลุกไปเข้าห้องน้ำก่อนก็ไม่ว่ากันแต่รีบหน่อยนะ ส่วนใครที่ไม่ลุกไปไหน
ก็แนะนำให้พักสายยตาสักแป๊บนึงหันออกไปมองนอกจอบ้างเผื่อเจอเนื้อคู่
อ่านมาถึงบรรทัดนี้แสดงว่าพร้อมแล้วเรามาเริ่มกันเลย และในส่วนสุดท้ายของไฟล์นี้จะขออธิบายรวบยอดเป็นบล็อค
เหมือนส่วนที่พึ่งจะอธิบายผ่านมา โดยจะตั้งแต่บรรทัดที่ 7-11
if (empty($config['skin']) || empty($config['db_username']) || empty($config['db_name'])) {
require_once ('admin/install.php');
} else {
require_once ('load.php');
}
โค้ดในบล็อคนี้จะเป็นการตรวจสอบว่าตัวแปร
$config['skin']
$config['db_username']
$config['db_name']
ว่างเปล่าอยู่หรือไม่ หากมีตัวใดตัวนึงเป็นค่าว่างเปล่า จะเรียกไฟล์ ติดตั้งระบบเข้ามาทำงานต่อ
ตัวแปรเหล่านี้ได้ถูกประกาศและกำหนดค่าไว้ในไฟล์ webroot/bin/config.php เป็นค่าที่ได้เมื่อเราทำการ
ติดตั้งระบบในคั้งแรก
require_once ('admin/install.php');
แต่หากตรวจสอบแล้วพบว่าต่าตัวแปรดังกล่าวไม่ค่าที่ถูกต้องตามที่ระบบกำหนดก็จะเรียกไฟล์โหลดเข้ามาทำงาน
require_once ('load.php');
สรุปการทำงานอธิบายตามบรรทัด
ไฟล์นี้เปรียบเหมือนการเตรียมความพร้อมในการเริ่มการทำงานของระบบ
1 เริ่มต้น PHP
2 นำเข้าไฟล์ webroot/bin/inint.php มาร่วมทำงานเพื่อเปิดใช้งานการบีบอัดเว็บและโหลดตัวแปรที่จำเป็น
พื้นฐานของระบบ
3 ประกาศตัวแปรชนิดคงที่โดยให้ชื่อว่า MAIN_INIT ไว้รองรับการทำงานของระบบ
4 if ตรวจสอบว่ามีไฟล์ webroot/bin/config.php อยู่ในโฟลเดอร์ที่รับบติดตั้งไว้หรือไม่
5 ถ้ามีจะนำเข้าไฟล์ webroot/bin/config.php มาร่วมทำงานเพื่อกำหนดตัวแปรสำคัญของระบบ
6 ปีกกาปิด if ของบรรทัดที่ 4
7 if ตรวจสอบค่าของตัวแปร $config['skin'], $config['db_username'], $config['db_name']
8 หาก if ตรวจสอบแล้วเป็นค่าว่างเปล่าจะนำเข้าไฟล์ admin/install.php มาร่วมทำงานเพื่อติดตั้งระบบ
9 หาก if ตรวจสอบแล้วผลเป็นเท็จให้ปฏิบัติตามโค้ดในบรรทัดถัดไป
10 จากบรรทัดที่ 9 หาก if ตรวจสอบแล้วว่าตัวแปรดังกล่าวมีค่าถูกต้องจะนำเข้าไฟล์ load.php
มาร่วมทำงานเพื่อเริ่มการทำงานของระบบ
หมายเหตุ หากลองสังเกตดูในทุกๆ ไฟล์นั้นมีการเปิดแท็กเริ่มของ PHP (<?php) แต่ไม่มีแท็กปิด (?>)
จากที่ได้สอบถามกับคุณอา gOragod ได้ความว่า เป็นการป้องกันไวท์สเปคหรือค่าสตริงที่เป็นช่องว่าง
(กด spacbar หนึ่งทีจะเข้าใจ) ที่อยู่หลังแท็ก ?> ติดมาด้วย
________________________________________________________________________________
==============================================================
บทความนี้เป็นปฐมบทจึงค่อนข้างที่จะอธิบายยืดยาวมากไปหน่อย สำหรับคราวหน้าจะขออธิบายในลักษณะของการ
สรุปเพื่อความกระชับของข้อมูลแต่ยังเน้นในการทำความเข้าใจที่ง่าย